#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project ：turbo 
@File    ：filters.py
@Author  ：赵加响
@Date    ：2023/5/24 10:43 
@Desc    ：以下是Django-filter中常用的一些`lookup_expr`值：
            - `exact`: 完全匹配
            - `iexact`: 不区分大小写的完全匹配
            - `contains`: 包含
            - `icontains`: 不区分大小写的包含
            - `startswith`: 以指定值开头
            - `istartswith`: 不区分大小写的以指定值开头
            - `endswith`: 以指定值结尾
            - `iendswith`: 不区分大小写的以指定值结尾
            - `in`: 在指定的值列表中
            - `gt`: 大于
            - `gte`: 大于等于
            - `lt`: 小于
            - `lte`: 小于等于
            - `range`: 在指定范围内
            - `isnull`: 是否为空
"""
import django_filters

from apps.samples.models import Samples


class SamplesFilter(django_filters.rest_framework.FilterSet):
    # 模糊查询
    item_no = django_filters.CharFilter(field_name='item_no', lookup_expr='contains')
    # 精准查询
    status = django_filters.CharFilter(field_name='status', lookup_expr='exact')
    # 使用外键对象的code进行查询
    menu_code = django_filters.CharFilter(field_name='menu__code', lookup_expr='exact')
    # 日期大于等于
    valid_date = django_filters.DateFilter(field_name='valid_date', lookup_expr='gte')
    # 日期小于
    invalid_date = django_filters.DateFilter(field_name='invalid_date', lookup_expr='lt')

    class Meta:
        model = Samples
        fields = ['item_no', 'status', 'menu_code', 'valid_date', 'invalid_date']
